#ifndef GAMEROOM_H
#define GAMEROOM_H

#include <QWidget>
#include <QSound>

//枚举蛇的移动方向
enum class SnakeDirect{
    UP = 0,
    DOWN,
    LEFT,
    RIGHT
};

class GameRoom : public QWidget
{
    Q_OBJECT
public:
    explicit GameRoom(QWidget *parent = nullptr);
    void paintEvent(QPaintEvent *event);
    void moveUp(); //蛇向上移动
    void moveDown(); //蛇向下移动
    void moveLeft(); //蛇向左移动
    void moveRight(); //蛇向右移动
    bool checkFail(); //判断游戏是否结束
    void createNewFood(); //创建食物
    void setTimeout(int timeout) {moveTimeout = timeout;}
signals:
    //void gameover();

private:
    const int snakeNodeWidth = 20; //表示蛇身体的宽度
    const int snakeNodeHeight = 20; //表示蛇身体的高度
    const int defaultTimeout = 200; //蛇默认移动速度

    int moveTimeout = defaultTimeout;

    QList<QRectF> snakeList; //表示贪吃蛇链表
    QRectF foodRect; //表示食物节点

    SnakeDirect moveDirect = SnakeDirect::UP; //设置蛇默认移动方向为向上
    QTimer* timer; //定时器

    bool isGameStart = false; //表示是否开始游戏
    QSound * sound;
};

#endif // GAMEROOM_H
